Make sure to get an icon window when constructing the fallback_icon. This
authorMatthias Clasen <mclasen@redhat.com>
Thu, 30 Mar 2006 18:22:39 +0000 (18:22 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Thu, 30 Mar 2006 18:22:39 +0000 (18:22 +0000)
2006-03-30  Matthias Clasen  <mclasen@redhat.com>

* gtk/gtkdnd.c (gtk_drag_get_icon): Make sure to get an
icon window when constructing the fallback_icon. This
fixes a crash when dragging icons between screens in
nautilus.  (#325751, Hylke van der Schaaf)

ChangeLog
ChangeLog.pre-2-10
gtk/gtkdnd.c

index 0849a1c654c49b2c986cde6ea51924e917f7fba5..0b86895466964a444d7f3477f3a06d22393d96f1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,13 @@
+2006-03-30  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkdnd.c (gtk_drag_get_icon): Make sure to get an
+       icon window when constructing the fallback_icon. This
+       fixes a crash when dragging icons between screens in
+       nautilus.  (#325751, Hylke van der Schaaf)
+
 2006-03-30  Michael Emmel  <mike.emmel@gmail.com>
 
-    * gdk/directfb/gdkpixmap-directfb.c implement
+       * gdk/directfb/gdkpixmap-directfb.c implement
            (gdk_pixmap_foreign_new_for_screen)
 
 2006-03-30  Emmanuele Bassi  <ebassi@cvs.gnome.org>
index 0849a1c654c49b2c986cde6ea51924e917f7fba5..0b86895466964a444d7f3477f3a06d22393d96f1 100644 (file)
@@ -1,6 +1,13 @@
+2006-03-30  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkdnd.c (gtk_drag_get_icon): Make sure to get an
+       icon window when constructing the fallback_icon. This
+       fixes a crash when dragging icons between screens in
+       nautilus.  (#325751, Hylke van der Schaaf)
+
 2006-03-30  Michael Emmel  <mike.emmel@gmail.com>
 
-    * gdk/directfb/gdkpixmap-directfb.c implement
+       * gdk/directfb/gdkpixmap-directfb.c implement
            (gdk_pixmap_foreign_new_for_screen)
 
 2006-03-30  Emmanuele Bassi  <ebassi@cvs.gnome.org>
index ca55e2d85964a645ea05200efd459ef0cab54157..46cf9ae0cf95033224d7fd1c859ba635674ccf3f 100644 (file)
@@ -288,6 +288,13 @@ static gboolean gtk_drag_button_release_cb     (GtkWidget         *widget,
                                                gpointer           data);
 static gboolean gtk_drag_abort_timeout         (gpointer           data);
 
+static void     set_icon_stock_pixbuf          (GdkDragContext    *context,
+                                               const gchar       *stock_id,
+                                               GdkPixbuf         *pixbuf,
+                                               gint               hot_x,
+                                               gint               hot_y,
+                                               gboolean           force_window);
+
 /************************
  * Cursor and Icon data *
  ************************/
@@ -2764,7 +2771,16 @@ gtk_drag_get_icon (GtkDragSourceInfo *info,
          save_destroy_icon = info->destroy_icon;
 
          info->icon_window = NULL;
-         gtk_drag_set_icon_default (info->context);
+         if (!default_icon_pixmap)
+           set_icon_stock_pixbuf (info->context, 
+                                  GTK_STOCK_DND, NULL, -2, -2, TRUE);
+         else
+           gtk_drag_set_icon_pixmap (info->context, 
+                                     default_icon_colormap, 
+                                     default_icon_pixmap, 
+                                     default_icon_mask,
+                                     default_icon_hot_x,
+                                     default_icon_hot_y);
          info->fallback_icon = info->icon_window;
          
          info->icon_window = save_icon_window;
@@ -3145,7 +3161,7 @@ gtk_drag_set_icon_name (GdkDragContext *context,
  * icon.
  **/
 void 
-gtk_drag_set_icon_default (GdkDragContext    *context)
+gtk_drag_set_icon_default (GdkDragContext *context)
 {
   g_return_if_fail (GDK_IS_DRAG_CONTEXT (context));
   g_return_if_fail (context->is_source);